﻿﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using transferObjects;
using System.Collections.Generic;

/// <summary>
/// Descripción breve de EmpresaDB
/// </summary>
namespace dao.sqlServer2005
{
    public class TrabajadorDB
    {
        SqlCommand insertTrabajador;
        SqlCommand selectTodosTrabajadores;
        SqlCommand selectTrabajador;
        SqlCommand updateTrabajador;


        public TrabajadorDB(SqlConnection connection)
        {
            String query = "";

            query = "INSERT INTO TRABAJADOR (TrabajadorID,EmpresaID,NombreFaena,Nombres,Apellidos,TelRedFija,TelCelular,NivelEducacional,anosAprobados," +
                    "FechaNac,EstadoCivil,CargasFamiliar,Cargo,HorarioConvenido,Calle,Numero,Dpto_Oficina,Region,Provincia," +
                    "TipoContrato,EstadoContrato,InicioContrato,TerminoContrato,Afp,Isapre,NombreEmergencia,TelRedFijaEmergencia,TelCelularEmergencia,Observaciones) " +
                    "VALUES (@TrabajadorID,@EmpresaID,@NombreFaena,@Nombres,@Apellidos,@TelRedFija,@TelCelular,@NivelEducacional,@anosAprobados," +
                    "@FechaNac,@EstadoCivil,@CargasFamiliar,@Cargo,@HorarioConvenido,@Calle,@Numero,@Dpto_Oficina,@Region,@Provincia," +
                    "@TipoContrato,@EstadoContrato,@InicioContrato,@TerminoContrato,@Afp,@Isapre,@NombreEmergencia,@TelRedFijaEmergencia,@TelCelularEmergencia,@Observaciones) ";
            insertTrabajador = new SqlCommand(query, connection);

            

            //query que selecciona todos las empresas 
            query = "SELECT * " +
                    "FROM TRABAJADOR";
            selectTodosTrabajadores = new SqlCommand(query, connection);

            
            //query que selecciona un trabajador
            query = "SELECT * " +
                    "FROM TRABAJADOR "+ 
                    "WHERE trabajadorID = @TrabajadorID";
            selectTrabajador = new SqlCommand(query, connection);
            selectTrabajador.Parameters.Add("trabajadorID", SqlDbType.VarChar);

            
            // query que actualiza o modifica los datos del Trabajador en su base de datos
            query = "UPDATE TRABAJADOR SET trabajadorID = @trabajadorID,empresaID = @empresaID, nombres = @nombres, apellidos = @apellidos, telRedFija = @telRedFija,"+
            "telCelular = @telCelular, nivelEduc = @nivelEduc, fechaNac = @fechaNac, anosAprobados = @anosAprobados, estadoCivil = @estadoCivil, cargasFam = @cargasFam,"+
            "cargo = @cargo, faena = @faena, horarioConv = @horarioConv, calle = @calle, numero = @numero, dpto_oficina = @dpto_oficina, region = @region,"+
            "provincia = @provincia, tipoContrato = @tipoContrato, estadoContrato = @estadoContrato, inicioContrato = @inicioContrato, terminoContrato = @terminoContrato,"+
            "afp = @afp, isapre = @isapre, nombreEmergencia = @nombreEmergencia, telRedFijaEmergencia = @telRedFijaEmergencia, telCelularEmergencia = @telCelularEmergencia,"+
            "observaciones = @observaciones "+
            "WHERE trabajadorID = @trabajadorID";
            updateTrabajador = new SqlCommand(query, connection);
             
        }


        public int agregarTrabajador(Trabajador trabajador)
        {

            try
            {
                insertTrabajador.Parameters.Add(new SqlParameter("TrabajadorID", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("EmpresaID", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("NombreFaena", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Nombres", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Apellidos", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("TelRedFija", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("TelCelular", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("NivelEducacional", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("AnosAprobados", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("FechaNac", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("EstadoCivil", SqlDbType.VarChar));//
                insertTrabajador.Parameters.Add(new SqlParameter("CargasFamiliar", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Cargo", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("HorarioConvenido", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Calle", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Numero", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Dpto_Oficina", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Region", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Provincia", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("TipoContrato", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("EstadoContrato", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("InicioContrato", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("TerminoContrato", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Afp", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Isapre", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("NombreEmergencia", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("TelRedFijaEmergencia", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("TelCelularEmergencia", SqlDbType.VarChar));
                insertTrabajador.Parameters.Add(new SqlParameter("Observaciones", SqlDbType.VarChar));
                insertTrabajador.Parameters[0].Value = trabajador.TrabajadorID;
                insertTrabajador.Parameters[1].Value = trabajador.EmpresaID;
                insertTrabajador.Parameters[2].Value = trabajador.NombreFaena;
                insertTrabajador.Parameters[3].Value = trabajador.Nombres;
                insertTrabajador.Parameters[4].Value = trabajador.Apellidos;
                insertTrabajador.Parameters[5].Value = trabajador.TelRedFija;
                insertTrabajador.Parameters[6].Value = trabajador.TelCelular;
                insertTrabajador.Parameters[7].Value = trabajador.NivelEducacional;
                insertTrabajador.Parameters[8].Value = trabajador.FechaNac;
                insertTrabajador.Parameters[9].Value = trabajador.AnosAprobados;
                insertTrabajador.Parameters[10].Value = trabajador.EstadoCivil;
                insertTrabajador.Parameters[11].Value = trabajador.CargasFamiliar;
                insertTrabajador.Parameters[12].Value = trabajador.Cargo;
                insertTrabajador.Parameters[13].Value = trabajador.HorarioConvenido;
                insertTrabajador.Parameters[14].Value = trabajador.Calle;
                insertTrabajador.Parameters[15].Value = trabajador.Numero;
                insertTrabajador.Parameters[16].Value = trabajador.Dpto_Oficina;
                insertTrabajador.Parameters[17].Value = trabajador.Region;
                insertTrabajador.Parameters[18].Value = trabajador.Provincia;
                insertTrabajador.Parameters[19].Value = trabajador.TipoContrato;
                insertTrabajador.Parameters[20].Value = trabajador.EstadoContrato;
                insertTrabajador.Parameters[21].Value = trabajador.InicioContrato;
                insertTrabajador.Parameters[22].Value = trabajador.TerminoContrato;
                insertTrabajador.Parameters[23].Value = trabajador.Afp;
                insertTrabajador.Parameters[24].Value = trabajador.Isapre;
                insertTrabajador.Parameters[25].Value = trabajador.NombreEmergencia;
                insertTrabajador.Parameters[26].Value = trabajador.TelRedFijaEmergencia;
                insertTrabajador.Parameters[27].Value = trabajador.TelCelularEmergencia;
                insertTrabajador.Parameters[28].Value = trabajador.Observaciones;

                int res = insertTrabajador.ExecuteNonQuery();

                return res;
            }
            catch (Exception e)
            {
                throw new Exception("Error en dao.sqlServer2005.EmpresaDB metodo agregar Trabajador \n\n" + e.Message);
            }
        }

        //modificar
        public int modificarTrabajador(Trabajador trabajador)
        {
            try
            {
                updateTrabajador.Parameters.Add(new SqlParameter("TrabajadorID", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("EmpresaID", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("NombreFaena", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Nombres", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Apellidos", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("TelRedFija", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("TelCelular", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("NivelEduc", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("FechaNac", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("AnosAprobados", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("EstadoCivil", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("CargasFamiliar", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Cargo", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("HorarioConvenido", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Calle", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Numero", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Dpto_Oficina", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Region", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Provincia", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("TipoContrato", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("EstadoContrato", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("InicioContrato", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("TerminoContrato", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Afp", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Isapre", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("NombreEmergencia", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("TelRedFijaEmergencia", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("TelCelularEmergencia", SqlDbType.VarChar));
                updateTrabajador.Parameters.Add(new SqlParameter("Observaciones", SqlDbType.VarChar));
                updateTrabajador.Parameters[0].Value = trabajador.TrabajadorID;
                updateTrabajador.Parameters[1].Value = trabajador.EmpresaID;
                updateTrabajador.Parameters[2].Value = trabajador.NombreFaena;
                updateTrabajador.Parameters[3].Value = trabajador.Nombres;
                updateTrabajador.Parameters[4].Value = trabajador.Apellidos;
                updateTrabajador.Parameters[5].Value = trabajador.TelRedFija;
                updateTrabajador.Parameters[6].Value = trabajador.TelCelular;
                updateTrabajador.Parameters[7].Value = trabajador.NivelEducacional;
                updateTrabajador.Parameters[8].Value = trabajador.FechaNac;
                updateTrabajador.Parameters[9].Value = trabajador.AnosAprobados;
                updateTrabajador.Parameters[10].Value = trabajador.EstadoCivil;
                updateTrabajador.Parameters[11].Value = trabajador.CargasFamiliar;
                updateTrabajador.Parameters[12].Value = trabajador.Cargo;
                updateTrabajador.Parameters[13].Value = trabajador.HorarioConvenido;
                updateTrabajador.Parameters[14].Value = trabajador.Calle;
                updateTrabajador.Parameters[15].Value = trabajador.Numero;
                updateTrabajador.Parameters[16].Value = trabajador.Dpto_Oficina;
                updateTrabajador.Parameters[17].Value = trabajador.Region;
                updateTrabajador.Parameters[18].Value = trabajador.Provincia;
                updateTrabajador.Parameters[19].Value = trabajador.TipoContrato;
                updateTrabajador.Parameters[20].Value = trabajador.EstadoContrato;
                updateTrabajador.Parameters[21].Value = trabajador.InicioContrato;
                updateTrabajador.Parameters[22].Value = trabajador.TerminoContrato;
                updateTrabajador.Parameters[23].Value = trabajador.Afp;
                updateTrabajador.Parameters[24].Value = trabajador.Isapre;
                updateTrabajador.Parameters[25].Value = trabajador.NombreEmergencia;
                updateTrabajador.Parameters[26].Value = trabajador.TelRedFijaEmergencia;
                updateTrabajador.Parameters[27].Value = trabajador.TelCelularEmergencia;
                updateTrabajador.Parameters[28].Value = trabajador.Observaciones;


                int res = updateTrabajador.ExecuteNonQuery();
                return res;
            }
            catch (Exception ex)
            {
                throw new Exception("Error en dao.sqlServer2005.TrabajadorDB metodo modificarTrabajador \n\n" + ex.Message);
            }
        }


        //obtener todas las empresas de la bd
        public List<Trabajador> obtenerTodosTrabajadores()
        {
            try
            {
                List<Trabajador> trabajadores = new List<Trabajador>();
                SqlDataReader reader = selectTodosTrabajadores.ExecuteReader();
                Trabajador trabajador;
                while (reader.Read())
                {
                    trabajador = new Trabajador();
                    trabajador.TrabajadorID = reader.GetString(0);
                    trabajador.EmpresaID = reader.GetString(1);
                    trabajador.NombreFaena = reader.GetString(2);
                    trabajador.Nombres = reader.GetString(3);
                    trabajador.Apellidos = reader.GetString(4);
                    trabajador.TelRedFija = reader.GetString(5);
                    trabajador.TelCelular = reader.GetString(6);
                    trabajador.NivelEducacional = reader.GetString(7);
                    trabajador.FechaNac = reader.GetString(8);
                    trabajador.AnosAprobados = reader.GetString(9);
                    trabajador.EstadoCivil = reader.GetString(10);
                    trabajador.CargasFamiliar = reader.GetString(11);
                    trabajador.Cargo = reader.GetString(12);
                    trabajador.HorarioConvenido = reader.GetString(13);
                    trabajador.Calle = reader.GetString(14);
                    trabajador.Numero = reader.GetString(15);
                    trabajador.Dpto_Oficina = reader.GetString(16);
                    trabajador.Region = reader.GetString(17);
                    trabajador.Provincia = reader.GetString(18);
                    trabajador.TipoContrato = reader.GetString(19);
                    trabajador.EstadoContrato = reader.GetString(20);
                    trabajador.InicioContrato = reader.GetString(21);
                    trabajador.TerminoContrato = reader.GetString(22);
                    trabajador.Afp = reader.GetString(23);
                    trabajador.Isapre = reader.GetString(24);
                    trabajador.NombreEmergencia = reader.GetString(25);
                    trabajador.TelRedFijaEmergencia=reader.GetString(26);
                    trabajador.TelCelularEmergencia=reader.GetString(27);
                    trabajador.Observaciones = reader.GetString(28);

                    trabajadores.Add(trabajador);
                }
                return trabajadores;
            }
            catch (Exception e)
            {
                throw new Exception("Error en dao.sqlServer2005.TrabajadorDB, método obtenerTodosTrabajadores \n\nDetalle error:" + e.Message);
            }

        }

        //obtener un trabajador
        public Trabajador obtenerTrabajador(String trabajadorID)
        {
            try
            {
                selectTrabajador.Parameters[0].Value = trabajadorID;

                SqlDataReader reader = selectTrabajador.ExecuteReader();
                Trabajador trabajador = new Trabajador();

                if (reader.Read())
                {
                    trabajador.TrabajadorID = reader.GetString(0);
                    trabajador.EmpresaID = reader.GetString(1);
                    trabajador.NombreFaena = reader.GetString(2);
                    trabajador.Nombres = reader.GetString(3);
                    trabajador.Apellidos = reader.GetString(4);
                    trabajador.TelRedFija = reader.GetString(5);
                    trabajador.TelCelular = reader.GetString(6);
                    trabajador.NivelEducacional = reader.GetString(7);
                    trabajador.FechaNac = reader.GetString(8);
                    trabajador.AnosAprobados = reader.GetString(9);
                    trabajador.EstadoCivil = reader.GetString(10);
                    trabajador.CargasFamiliar = reader.GetString(11);
                    trabajador.Cargo = reader.GetString(12);
                    trabajador.HorarioConvenido = reader.GetString(13);
                    trabajador.Calle = reader.GetString(14);
                    trabajador.Numero = reader.GetString(15);
                    trabajador.Dpto_Oficina = reader.GetString(16);
                    trabajador.Region = reader.GetString(17);
                    trabajador.Provincia = reader.GetString(18);
                    trabajador.TipoContrato = reader.GetString(19);
                    trabajador.EstadoContrato = reader.GetString(20);
                    trabajador.InicioContrato = reader.GetString(21);
                    trabajador.TerminoContrato = reader.GetString(22);
                    trabajador.Afp = reader.GetString(23);
                    trabajador.Isapre = reader.GetString(24);
                    trabajador.NombreEmergencia = reader.GetString(25);
                    trabajador.TelRedFijaEmergencia = reader.GetString(26);
                    trabajador.TelCelularEmergencia = reader.GetString(27);
                    trabajador.Observaciones = reader.GetString(28);

                }
                return trabajador;
            }

            catch (Exception ex)
            {
                throw new Exception("Error en dao.sqlServer2005.PropiedadDB, método obtener trabajador \n\nDetalle error:" + ex.Message);
            }
        }
    }
}

